home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / SciAn / src / ScianSpaces.h < prev    next >
C/C++ Source or Header  |  1994-08-01  |  7KB  |  186 lines

  1. /*ScianSpaces.h
  2.   Public stuff for ScianSpace.c
  3. */
  4.  
  5. extern Matrix Identity;
  6.  
  7. extern ObjPtr curSpace, spaceClass, observerClass;
  8. extern real spaceTime;            /*Time of the current space*/
  9. extern ObjPtr controllerClass, spacePanelClass, spaceBackPanelClass;
  10. extern Bool oneObserver, oneClock, oneLights, oneRenderer;
  11. extern Bool drawingTransparent;
  12. extern long curZMin, curZMax;
  13. extern ObjPtr spacePickedObject;
  14. extern real observerPosition[3];
  15.  
  16. /*Is space predicate*/
  17. #define IsSpace(object) IntVarEql(object, CLASSID, CLASS_SPACE)
  18.  
  19. /*Values for drawing*/
  20. #define DRAWSPACE    1        /*Drawing in a space*/
  21. #define PICKSPACE    2        /*Picking in a space*/
  22. #define OVERDRAWSPACE    3        /*Over draw a space*/
  23.  
  24. /*Running controls*/
  25. #define RC_FAST_REVERSE    4        /*Fast reverse*/
  26. #define RC_REVERSE    2        /*Reverse*/
  27. #define RC_STOP        0        /*Stop*/
  28. #define RC_FORWARD    1        /*Forward*/
  29. #define RC_FAST_FORWARD    3        /*Fast forward*/
  30.  
  31. /*Values for whichview.  Check macros later before changing*/
  32. #define VIEW_CENTER    0        /*Draw from center*/
  33. #define VIEW_XLEFT    2        /*Crosseyed left*/
  34. #define VIEW_XRIGHT    3        /*Crosseyed right*/
  35. #define VIEW_RCLEFT    4        /*Red/cyan left*/
  36. #define VIEW_RCRIGHT    5        /*Red/cyan right*/
  37. #define VIEW_CRLEFT    6        /*Cyan/red left*/
  38. #define VIEW_CRRIGHT    7        /*Cyan/red right*/
  39. #define VIEW_CLEFT    8        /*Crystal eyes left*/
  40. #define VIEW_CRIGHT    9        /*Crystal eyes right*/
  41. #define VIEW_WLEFT    10        /*Walleyed left*/
  42. #define VIEW_WRIGHT    11        /*Walleyed right*/
  43. #define VIEW_RGLEFT    12        /*Red/green left*/
  44. #define VIEW_RGRIGHT    13        /*Red/green right*/
  45. #define VIEW_GRLEFT    14        /*Green/red left*/
  46. #define VIEW_GRRIGHT    15        /*Green/red right*/
  47. #define VIEW_EOLEFT    16        /*Even/odd left*/
  48. #define VIEW_EORIGHT    17        /*Even/odd right*/
  49. #define VIEW_OELEFT    18        /*Odd/even left*/
  50. #define VIEW_OERIGHT    19        /*Odd/even right*/
  51. #define VIEWOF(a) ((a) & 31)
  52.  
  53. #define ISSTEREO(a) (VIEWOF(a))
  54. #define ISLEFT(a) (ISSTEREO(a) && !((a) & 1))
  55. #define ISRIGHT(a) (ISSTEREO(a) && ((a) & 1))
  56.  
  57. #define VIEW_MOD_ORTHO    32        /*Modify for ortho view*/
  58.  
  59. /*Values for renderer type, 0 through whatever*/
  60. #define RT_NONE        0        /*No renderer*/
  61. #define RT_RGB_HARDWARE    1        /*RGB hardware renderer*/
  62. #define RT_CMAP_HARDWARE 2        /*Color map hardware renderer*/
  63.  
  64. /*Valued for filter type, 0 through whatever*/
  65. #define FT_NONE        0        /*No filter*/
  66. #define FT_SHRINK    1        /*Shrink filter*/
  67. #define FT_4AVERAGE    2        /*Average 4 neighbors*/        
  68.  
  69. /*Values for view type*/
  70. #define VT_PERSPECTIVE    0        /*Perspective view*/
  71. #define VT_ORTHOGRAPHIC    1        /*Orthographic view*/
  72.  
  73. #if 0
  74. #define VT_CROSSEYED    2        /*Crosseyed stereo*/
  75. #define VT_REDCYAN    3        /*Red/Cyan stereo*/
  76. #define VT_LEFTONTOP    4        /*Left eye on top*/
  77. #define VT_WALLEYED    5        /*Wall-eyed stereo*/
  78. #endif
  79.  
  80. /*Values for stereo mode*/
  81. #define SM_MONO        0        /*Mono view*/
  82. #define SM_CROSSEYED    1        /*Crosseyed stereo*/
  83. #define SM_WALLEYED    2        /*Walleyed stereo*/
  84. #define SM_REDCYAN    3        /*Red = left, cyan = right*/
  85. #define SM_CYANRED    4        /*Cyan = left, red = right*/
  86. #define SM_REDGREEN    5        /*Red = left, green = right*/
  87. #define SM_GREENRED    6        /*Green = left, red = right*/
  88. #define SM_ODDEVEN    7        /*Odd = left, even = right*/
  89. #define SM_EVENODD    8        /*Even = left, odd = right*/
  90. #define SM_LEFTONTOP    9        /*Left eye on top*/
  91. #define SM_RIGHTONTOP    10        /*Right eye on top*/
  92.  
  93. /*Values for space tool.*/
  94. #define ST_FINGER    0        /*Finger.*/
  95. #define ST_FLYING    1        /*Flying tool*/
  96. #define ST_METER    3        /*Data meter*/
  97. #define ST_EYEDROPPER    4        /*Eye dropper tool*/
  98. #define ST_ANNOTATION    5        /*Annotation*/
  99. #define ST_RECTANGLE    6        /*Rectangle*/
  100. #define ST_LINE        7        /*Line*/
  101. #define ST_TIME_READOUT    8        /*Clock*/
  102.  
  103. #define AIRSPEEDFACTOR    0.005        /*Airspeed of eye per throttle stop*/
  104. #define MAXROLL        (M_PI / 10.0)    /*Pi/10 of roll max*/
  105. #define MAXDPITCH    0.1        /*Maximum delta percentage pitch*/
  106. #define ROLLYAWFACTOR    1.0        /*Roll into yaw per unit time*/
  107. #define ROLLDSPFACTOR    (900.0 / M_PI)
  108. #define MOVEFACTOR    0.35        /*Move per D unit * distance*/
  109.  
  110. /*Predicates*/
  111. #define IsController(object) GetPredicate(object, CONTROLLERP)
  112. #define IsObserver(object) IntVarEql(object, CLASSID, CLASS_OBSERVER)
  113. #define IsClock(object) IntVarEql(object, CLASSID, CLASS_CLOCK)
  114. #define IsRenderer(object) IntVarEql(object, CLASSID, CLASS_RENDERER)
  115.  
  116. extern int qualityDrawnSoFar;        /*Max quality drawn so far*/
  117. extern int minDrawingQuality;        /*Minimum quality to draw*/
  118. extern int maxDrawingQuality;        /*Maximum quality to draw*/
  119. extern Bool phsco;
  120.  
  121. void ChangeClockForDataset();
  122. ObjPtr MakeClockDatasets();
  123.  
  124. #ifdef PROTO
  125. ObjPtr NewSpace(int, int, int, int);
  126. Bool AddObjToSpace(ObjPtr, ObjPtr, ObjPtr, ObjPtr, ObjPtr);
  127. Bool AddControllerToSpace(ObjPtr, ObjPtr, ObjPtr, ObjPtr);
  128. Bool SetFocus(ObjPtr);
  129. ObjPtr NewClock(void);
  130. ObjPtr NewObserver(void);
  131. ObjPtr NewRenderer(void);
  132. void SetClock(ObjPtr, real);
  133. void ReinitController(ObjPtr);
  134. ObjPtr ShowIconControls(ObjPtr);
  135. void MatrixToQuaternion(real m[3][3], Quaternion q);
  136. void QMult(Quaternion q1, Quaternion q2, Quaternion r);
  137. void PrintClock(char *, char *, real);
  138. void GetSliderRange(ObjPtr slider, real *loValue, real *hiValue);
  139. void SetRotationMotor(real, real, real, real);
  140. Bool RotateObserver(ObjPtr, real axis[3], real, Bool);
  141. Bool RotateLights(ObjPtr, real axis[3], real, Bool, ObjPtr, ObjPtr);
  142. void GetUpVector(real upVector[3], ObjPtr observer);
  143. void GetForwardVector(real forwardVector[3], ObjPtr observer);
  144. void GetFocusPoint(real forwardVector[3], ObjPtr observer);
  145. void GetObserverLocation(real location[3], ObjPtr observer);
  146. void GetAdjustedVectors(real forwardVector[3], real upVector[3], ObjPtr observer);
  147. void StartSpace(ObjPtr space, int left, int right, int bottom, int top,
  148.     int action, int whichView);
  149. void StopSpace(int);
  150. ObjPtr MoveSpace(ObjPtr object, int x, int y, long flags);
  151. ObjPtr RotateSpace(ObjPtr object, int x, int y, long flags);
  152. void QRot(real v[3], Quaternion q, real r[3]);
  153. void RotToQuaternion(real axis[3], real amount, Quaternion r);
  154. Bool TweenObserverPlacement(ObjPtr track, int whichFrame, Quaternion qr, real locr[3]);
  155. #else
  156. ObjPtr NewSpace();
  157. Bool AddObjToSpace();
  158. Bool SetFocus();
  159. Bool AddControllerToSpace();
  160. ObjPtr NewClock();
  161. ObjPtr NewObserver();
  162. ObjPtr NewRenderer();
  163. void SetClock();
  164. void ReinitController();
  165. ObjPtr ShowIconControls();
  166. void MatrixToQuaternion();
  167. void QMult();
  168. void PrintClock();
  169. void GetSliderRange();
  170. void SetRotationMotor();
  171. Bool RotateObserver();
  172. Bool RotateLights();
  173. void GetUpVector();
  174. void GetForwardVector();
  175. void GetFocusPoint();
  176. void GetObserverLocation();
  177. void GetAdjustedVectors();
  178. void StartSpace();
  179. void StopSpace();
  180. ObjPtr MoveSpace();
  181. ObjPtr RotateSpace();
  182. void QRot();
  183. void RotToQuaternion();
  184. Bool TweenObserverPlacement();
  185. #endif
  186.